package com.ww.learn.extenfun

/**
 * 扩展函数
 * 扩展是静态解析的，在编译时根据接收器类型，调用哪个扩展函数已经知道了
 */
fun main() {
    open class Shape
    class Rectangle : Shape()

    fun Shape.getName() = "Shape"
    fun Rectangle.getName() = "Rectangle"

    // 调用的扩展函数只取决于参数s的声明类型，该类型是Shape类
    fun printClassName(s: Shape) {
        println(s.getName())
    }

    // 打印结果
    // Shape
    printClassName(Rectangle())
}